Zurück in Fortgeschrittene ProgrammentwicklungWeiter in Fortgeschrittene ProgrammentwicklungPolymorphismus Zusammenfassung ?

Unter Polymorphismus versteht man ...

In beiden Fällen gibt es Situationen, in denen erst unmittelbar vor einem Prozeduraufruf entschieden werden kann, welche Prozedur ausgeführt werden soll. Das folgenden Beispiel zeigt eine solche Situation:

Klassenmodul cTestA

Public Sub zeige()
  MsgBox "Ich bin ein Objekt vom Typ cTestA"
End Sub

Klassenmodul cTestB

Public Sub zeige()
  MsgBox "Ich bin ein Objekt vom Typ cTestB"
End Sub

Standardmodul Test

Dim Obj As Object
If InputBox("Wählen Sie A oder B") = "A" Then
  Set Obj = New cTestA
Else
  Set Obj = New cTestB
End If
Obj.zeige

Die Klassen cTestA und cTestBbesitzen beide eine Methode zeige(), die verschiedene Meldungen auf dem Bildschirm ausgeben. Die Testprozedur vereinbart eine Objektvariable des allgemeinen Objekttyps Object. Zur Laufzeit wird ihr entweder eine Instanz der ersten oder der zweiten Klasse zugewiesen. Damit steht erst unmittelbar vor Ausführung der letzten Programmzeile fest, welche der beiden zeige()-Methoden ausgeführt werden soll. Man spricht deshalb von später Bindung.

Object sollte nur verwendet werden, wenn Polymorphismus ausdrücklich erwünscht ist. Bei spezifischen Objekttypen kann der Übersetzer bereits zur Übersetzungszeit entscheiden, welche Prozedur ausgeführt werden soll. Man spricht deshalb von früher Bindung. Erstens ist die frühe Bindung effizienter als die späte, und zweitens werden beim Arbeiten mit spezifischen Objekttypen ungültige Prozeduraufrufe bereits zur Übersetzungszeit gemeldet.

©abo